﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;

using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Diagnostics;

namespace Formation_Entreprise
{
    public partial class frmMain : Form
    {
        public frmMain()
        {
            InitializeComponent();

            // Gestion de base de l'apparence du formulaire (frmMain)
            this.Text = "GESTION DE LA FORMATION AUX ENTREPRISES - COLLÈGE DE L'OUTAOUAIS";
            this.IsMdiContainer = true;
            this.WindowState = FormWindowState.Maximized;
            this.menuMain.Enabled = false;
            /*
            // POUR chaque Control dans le formulaire MDI Parent
            foreach (Control ctrl in this.Controls)
            {
                try
                {
                    // Essaie de caster le Control en type MDIClient
                    MdiClient ctlMDI = (MdiClient)ctrl;

                    // Mettre la propriété BackColor du formulaire comme étant
                    // LightGray
                    ctlMDI.BackColor = Color.LightGray;
                }
                catch (InvalidCastException CastEx)
                {
                    // On attrape l'erreur si le "casting" en type MdiClient
                    // ne fonctionne pas et nous l'ignorons

                    // N.B. Il est impossible de changer la couleur de fond d'un 
                    // formulaire déclarer comme étant MdiParent
                    // Voir article de microsoft à ce sujet: http://support.microsoft.com/kb/319465/
                }
            }
            */

            // AFFICHAGE du formulaire frmLogin en l'intégrant comme étant
            // un enfant du formulaire actif (frmMain)
            frmLogin formLogin = new frmLogin();
            formLogin.MdiParent = this;
            formLogin.Show();
        }
        
        private void entrepriseToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // AFFICHAGE du formulaire frmCreationEntreprise en l'intégrant comme étant
            // un enfant du formulaire actif (frmMain)
            frmCreationEntreprise formCreationEntreprise = new frmCreationEntreprise();
            formCreationEntreprise.MdiParent = this;
            formCreationEntreprise.Show();            
        }

        private void fermetureToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // Fermeture du formulaire, cette action peu aussi être accomplit avec ALT+F4
                this.Close();
        }

        private void entrepriseToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            // AFFICHAGE du formulaire frmSelectionEntreprise en l'intégrant comme étant
            // un enfant du formulaire actif (frmMain)
            frmSelectionEntreprise formSelectionEntreprise = new frmSelectionEntreprise();
            formSelectionEntreprise.MdiParent = this;
            formSelectionEntreprise.Show();            
        }

        private void formationToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // AFFICHAGE du formulaire frmFormation en l'intégrant comme étant
            // un enfant du formulaire actif (frmMain)
            frmFormation formFormation = new frmFormation();
            formFormation.MdiParent = this;
            formFormation.Show();            
        }

        private void formationToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            // AFFICHAGE du formulaire frmSelectFormation en l'intégrant comme étant
            // un enfant du formulaire actif (frmMain)
            frmSelectFormation frmSelectionFormation = new frmSelectFormation();
            frmSelectionFormation.MdiParent = this;
            frmSelectionFormation.Show();            
        }

        private void periodiqueToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // AFFICHAGE du formulaire frmRapportPeriode en l'intégrant comme étant
            // un enfant du formulaire actif (frmMain)
            frmRapportPeriode formRapportPeriode = new frmRapportPeriode();
            formRapportPeriode.MdiParent = this;
            formRapportPeriode.Show();            
        }

        private void conseillersToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // AFFICHAGE du formulaire frmRapportConseillers en l'intégrant comme étant
            // un enfant du formulaire actif (frmMain)
            frmRapportConseillers formRapportConseillers = new frmRapportConseillers();
            formRapportConseillers.MdiParent = this;
            formRapportConseillers.Show();            
        }

        private void optionsAdministrationToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // AFFICHAGE du formulaire frmOptionsAdmin en l'intégrant comme étant
            // un enfant du formulaire actif (frmMain)
            frmOptionsAdmin formOptionsAdmin = new frmOptionsAdmin();
            formOptionsAdmin.MdiParent = this;
            formOptionsAdmin.Show();            
        }

        private void formateurToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // AFFICHAGE du formulaire frmFormateur en l'intégrant comme étant
            // un enfant du formulaire actif (frmMain)
            frmFormateur formFormateur = new frmFormateur();
            formFormateur.MdiParent = this;
            formFormateur.Show();
        }

        private void coursToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // AFFICHAGE du formulaire frmCours en l'intégrant comme étant
            // un enfant du formulaire actif (frmMain)
            frmCours formCours = new frmCours();
            formCours.MdiParent = this;
            formCours.Show();
        }

        private void déconnectionToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //Confirmation de la deconnection
            DialogResult dlgResult = MessageBox.Show("Voulez vous vraiment vous déconnecter?", "Déconnexion", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (dlgResult == DialogResult.Yes)
            {
                //Fermer toutes les fenetres actives
                foreach (Form f in this.MdiChildren)
                {
                    f.Close();
                }

                //Effectuer la deconnection
                this.ToggleMenuMain(false, false);
                frmLogin formLogin = new frmLogin();
                formLogin.MdiParent = this;
                formLogin.Show();          
            }
        }

        // Fonction ToggleMenuMain, permet d'acceder à la propriété 
        // Enabled du menu du formulaire principal a partir des 
        // autres formulaire, principalement frmLogin.
        public void ToggleMenuMain(bool value, bool admin)
        {
            this.menuMain.Enabled = value;
            optionsAdministrationToolStripMenuItem.Enabled = true;
            if (!admin)
                optionsAdministrationToolStripMenuItem.Enabled = false;
        }

        private void afficherLaideToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                Process.Start("AcroRd32.exe", "../../document/Utilisation.pdf");
            }
            catch (Exception ex) 
            { 
                MessageBox.Show("Une erreur s'est produite lors de l'ouverture du fichier, vous devez installer Adobe Reader, et réessayer","Erreur", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                Process.Start("http://get.adobe.com/fr/reader/");
            }
        }

        private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
        {
            e.Cancel = (e.CloseReason == CloseReason.UserClosing && MessageBox.Show("Êtes-vous certain de vouloir quitter?", "Fermeture", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes);
        }

        private void DcfTSMenuItem_Click(object sender, EventArgs e)
        {
            déconnectionToolStripMenuItem_Click(sender, e);
        }

        private void ClosefTSMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void aideTSMenuItem_Click(object sender, EventArgs e)
        {
            afficherLaideToolStripMenuItem_Click(sender, e);
        }

        public void SetProgressBarValue(int max)
        {
            this.tsProgressBar.Maximum = max;
        }

        public void PerformStepProgressBar()
        {
            this.tsProgressBar.PerformStep();
        }

        public void ResetToolStrip()
        {
            timer.Start();           
        }

        private void messageriePublicitaireToolStripMenuItem_Click(object sender, EventArgs e)
        {
            List<string> listEmails = new List<string> { };
            List<objEntreprise> listEntreprise = AccesTableEntreprise.ListerEntreprises();

            foreach (objEntreprise oE in listEntreprise)
                listEmails.Add(AccesTableEntreprise.ObtenirInformationEntreprise(oE.Entreprise).Courriel);

            OutlookMessaging.EnvoyerMessage(listEmails);
        }

        private void timer_Tick(object sender, EventArgs e)
        {
            this.tsProgressBar.Maximum = 0;
            this.tsProgressBar.Value = 0;
            this.lblStatut.Text = string.Empty;
            this.timer.Stop();
        } 
    }
}
